#ifndef USERSERVICE_H
#define USERSERVICE_H

#include "../dao/user_dao.h"

class QLS_DB_MANAGER_EXPORT UserService
{
public:
    /**
     * @brief The UserType enum
     * ERRNO_SUCCESS：					成功
     * ERRNO_INEXISTENCE：				用户不存在
     * ERRNO_ALREADYEXIST：				用户名已存在
     * ERRNO_MOBILE_ALREADYEXIST：		手机号已被绑定
     * ERRNO_EMAIL_ALREADYEXIST：		邮箱已被绑定
     */
    enum UserType
    {
        UNKNOW = 0,

        ERRNO_SUCCESS = 1000,
        ERRNO_INEXISTENCE,
        ERRNO_ALREADYEXIST,
        ERRNO_MOBILE_ALREADYEXIST,
        ERRNO_EMAIL_ALREADYEXIST,
    };

public:
    UserService();

    /* 通过id查找用户 */
    User *findUserById(const quint32 &id);

    /* 通过username查找用户 */
    User *findUserByUsername(const QString &username);

    /* 通过username和password查找用户 */
    User *findUserByUsernameAndPassword(const QString &username,
                                        const QString &password);

    /* 通过username,password,mobile查找用户 */
    User *findUserByUsernameAndPwdAndMobile(const QString &username,
                                            const QString &password,
                                            const QString &mobile);

    /* 通过username,mobile查找用户 */
    User *findUserByUsernameAndMobile(const QString &username,
                                      const QString &mobile);

    /* 将user存入数据库 */
    quint32 addUser(const User &user);

    /* 修改用户数据 */
    quint32 updateUser(const User &user);

    /* 查询表是否存在 */
    bool exists(const QString &databaseType);

    /* 创建表 */
    void CreateTable(const QString &databaseType);

private:
    UserDao ud;
};

#endif // USERSERVICE_H
